package com.mobile.collect.present;

import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.mobile.collect.R;
import com.mobile.collect.activitys.AddDevicePicPointActivity;
import com.mobile.collect.beans.SealPointInfo;

import java.util.ArrayList;
import java.util.List;

import cn.droidlover.xdroidmvp.base.ListViewChildClickListener;

@Deprecated
public class PicPointPresent extends BasePresent<AddDevicePicPointActivity> {

//    String defaultDesc = "";//附加描述
    String defaultHigh = "";//高度
    String defaultKeepWarm = "";//保温


    public List<String> getNameList() {
        List<String> list = new ArrayList<>();
        list.add("泵");
        list.add("罐");
        list.add("跨线");
        list.add("液位计");
        list.add("换热器");
        list.add("塔");
        list.add("压缩机");
        list.add("远传仪表阀");
        list.add("安全阀");
        return list;
    }

    public List<String> getTypeList() {
        List<String> list = new ArrayList<>();
        list.add("阀门");
        list.add("连接件");
        list.add("开口管线");
        list.add("泵");
        list.add("泄压装置");
        list.add("搅拌器");
        list.add("压缩机");
        list.add("法兰");
        return list;
    }

    public List<String> getOtherList() {
        List<String> list = new ArrayList<>();
        list.add("是");
        list.add("否");
        return list;
    }

    public List<String> getHardReasonList() {
        List<String> list = new ArrayList<>();
        list.add("高出地面2米");
        list.add("不在触及范围");
        list.add("物理隔离");
        list.add("高于平台2米");
        return list;
    }

    public List<String> getDangerReasonList() {
        List<String> list = new ArrayList<>();
        list.add("需要安全设备");
        list.add("受限空间");
        list.add("电离辐射");
        list.add("缺氧或富氧");
        return list;
    }

    public ArrayList<String> getChildTypeList(String inputText) {
        ArrayList<String> subtypeList = new ArrayList<>();
        if (inputText.contains("阀门")) {
            subtypeList.add("闸阀");
            subtypeList.add("球阀");
            subtypeList.add("控制阀");
            subtypeList.add("截止阀");
            subtypeList.add("针阀");
            subtypeList.add("蝶阀");
        }
        if (inputText.contains("连接件")) {
            subtypeList.add("丝扣连接");
            subtypeList.add("管帽");
            subtypeList.add("活接");
            subtypeList.add("丝堵");
            subtypeList.add("空冷丝堵");
        }
        if (inputText.contains("泵")) {
//            subtypeList.add("泵");
//            subtypeList.add("视镜");
//            subtypeList.add("油杯");
            subtypeList.add("离心泵");
//            subtypeList.add("注入泵");
            subtypeList.add("往复泵");
            subtypeList.add("螺杆泵");
            subtypeList.add("真空泵");
        }
        if (inputText.contains("压缩机")) {
//            subtypeList.add("压缩机");
            subtypeList.add("离心式压缩机");
            subtypeList.add("往复式压缩机");
            subtypeList.add("螺杆式压缩机");
        }
        if (inputText.contains("法兰")) {
            subtypeList.add("法兰");
//            subtypeList.add("液位计");
        }
        if (inputText.contains("开口管线")) {
            subtypeList.add("开口管线");
        }
        if (inputText.contains("泄压装置")) {
            subtypeList.add("安全阀");
        }
        if (inputText.contains("搅拌器")) {
            subtypeList.add("搅拌器");
        }
        return subtypeList;
    }


    public ArrayList<String> getDescription(String inputText) {
        ArrayList<String> descriptionList = new ArrayList<>();
        if (inputText.contains("泵")) {
            descriptionList.add("泵");
            descriptionList.add("离心泵（P）");
            descriptionList.add("本体轴封");
            descriptionList.add("本体油杯");
            descriptionList.add("本体视镜");
            descriptionList.add("本体丝堵");
            descriptionList.add("本体排污阀");
            descriptionList.add("本体压盖");
            descriptionList.add("出口法兰");
            descriptionList.add("入口法兰");
            descriptionList.add("入口管线-入料闸阀");
            descriptionList.add("入口管线-过滤器");
            descriptionList.add("入口管线-导淋阀");
            descriptionList.add("出口管线-出料闸阀");
            descriptionList.add("出口管线-压力表");
            descriptionList.add("出口管线-排污线导淋阀");
            descriptionList.add("干气密封系统");
            descriptionList.add("润滑油密封系统-密封换热器壳程入口");
        }
        if (inputText.contains("调节阀组")) {
            descriptionList.add("调节阀组本体（闸阀）");
            descriptionList.add("调节阀组前手阀");
            descriptionList.add("调节阀组后手阀");
            descriptionList.add("调节阀组跨线阀");
            descriptionList.add("调节阀组导淋阀");
        }
        if (inputText.contains("罐")) {
            descriptionList.add("罐底排污阀");
            descriptionList.add("罐体人孔");
            descriptionList.add("罐体液位计-上引压阀");
            descriptionList.add("罐体液位计-上放空阀");
            descriptionList.add("罐体液位计-液位计本体");
            descriptionList.add("罐体液位计-下引压阀");
            descriptionList.add("罐体液位计-下导淋阀");
            descriptionList.add("罐顶放空阀");
            descriptionList.add("罐顶人孔");
            descriptionList.add("罐顶压力表");
            descriptionList.add("罐顶安全阀-安全阀前手阀");
            descriptionList.add("罐顶安全阀-安全阀后手阀");
            descriptionList.add("罐顶安全阀-安全阀本体");
            descriptionList.add("罐顶安全阀-安全阀本体丝堵");
        }
        if (inputText.contains("罐顶调节阀组")) {
            descriptionList.add("调节阀组本体");
            descriptionList.add("调节阀组前手阀");
            descriptionList.add("调节阀组后手阀");
            descriptionList.add("调节阀组跨线阀");
            descriptionList.add("调节阀组导淋阀");
        }
        if (inputText.contains("罐顶远传仪表阀")) {
            descriptionList.add("换热器（E）");
            descriptionList.add("换热器本体封头");
            descriptionList.add("换热器本体丝堵");
            descriptionList.add("换热器管程入口法兰");
            descriptionList.add("换热器管程出口法兰");
            descriptionList.add("换热器壳程入口法兰");
            descriptionList.add("换热器壳程出口法兰");
            descriptionList.add("换热器管程入口阀");
            descriptionList.add("换热器管程入料管线导淋阀");
            descriptionList.add("换热器管程入料管线温度计");
            descriptionList.add("换热器管程入料管线导淋阀");
            descriptionList.add("换热器管程出料管线阀");
            descriptionList.add("换热器管程出料管线温度计");
            descriptionList.add("换热器管程出料管线导淋阀");
            descriptionList.add("换热器管程出料管线调节阀组");
        }
        if (inputText.contains("压缩机")) {
            descriptionList.add("本体");
            descriptionList.add("注油器");
            descriptionList.add("润滑油管线阀");
            descriptionList.add("润滑油管线连接件");
            descriptionList.add("润滑油管线温度表");
            descriptionList.add("本体压盖");
            descriptionList.add("排污线阀");
            descriptionList.add("吹扫线阀");
            descriptionList.add("仪表管线的引压线");
            descriptionList.add("入口管线阀");
            descriptionList.add("入口管线导淋");
            descriptionList.add("入口管线压力表");
            descriptionList.add("出口管线阀");
            descriptionList.add("出口管线压力表");
            descriptionList.add("出口管线导淋");
            descriptionList.add("一级入口缓冲罐法兰");
            descriptionList.add("一级入口缓冲罐压力表");
            descriptionList.add("一级入口缓冲罐温度表");
            descriptionList.add("一级入口缓冲罐热电偶");
            descriptionList.add("二级入口缓冲罐法兰");
            descriptionList.add("二级入口缓冲罐压力表");
            descriptionList.add("二级入口缓冲罐温度表");
            descriptionList.add("二级入口缓冲罐热电偶");
            descriptionList.add("一级出口缓冲罐法兰");
            descriptionList.add("一级出口缓冲罐压力表");
            descriptionList.add("一级出口缓冲罐温度表");
            descriptionList.add("一级出口缓冲罐热电偶");
            descriptionList.add("二级出口缓冲罐法兰");
            descriptionList.add("二级出口缓冲罐压力表");
            descriptionList.add("二级出口缓冲罐温度表");
            descriptionList.add("二级出口缓冲罐热电偶");
        }
        if (inputText.contains("安全阀")) {
            descriptionList.add("安全阀前手阀");
            descriptionList.add("安全阀后手阀");
            descriptionList.add("安全阀本体");
            descriptionList.add("安全阀本体丝堵");
        }
        return descriptionList;
    }

    public ArrayList<String> getAllDescription() {
        ArrayList<String> descriptionList = new ArrayList<>();
        descriptionList.add("泵@" + "泵");

        descriptionList.add("泵@" + "离心泵（P）");
        descriptionList.add("泵@" + "本体轴封");
        descriptionList.add("泵@" + "本体油杯");
        descriptionList.add("泵@" + "本体视镜");
        descriptionList.add("泵@" + "本体丝堵");
        descriptionList.add("泵@" + "本体排污阀");
        descriptionList.add("泵@" + "本体压盖");
        descriptionList.add("泵@" + "出口法兰");
        descriptionList.add("泵@" + "入口法兰");
        descriptionList.add("泵@" + "入口管线-入料闸阀");
        descriptionList.add("泵@" + "入口管线-过滤器");
        descriptionList.add("泵@" + "入口管线-导淋阀");
        descriptionList.add("泵@" + "出口管线-出料闸阀");
        descriptionList.add("泵@" + "出口管线-压力表");
        descriptionList.add("泵@" + "出口管线-排污线导淋阀");
        descriptionList.add("泵@" + "干气密封系统");
        descriptionList.add("泵@" + "润滑油密封系统-密封换热器壳程入口");

        descriptionList.add("调节阀组@" + "调节阀组本体（闸阀）");
        descriptionList.add("调节阀组@" + "调节阀组前手阀");
        descriptionList.add("调节阀组@" + "调节阀组后手阀");
        descriptionList.add("调节阀组@" + "调节阀组跨线阀");
        descriptionList.add("调节阀组@" + "调节阀组导淋阀");

        descriptionList.add("罐@" + "罐底排污阀");
        descriptionList.add("罐@" + "罐体人孔");
        descriptionList.add("罐@" + "罐体液位计-上引压阀");
        descriptionList.add("罐@" + "罐体液位计-上放空阀");
        descriptionList.add("罐@" + "罐体液位计-液位计本体");
        descriptionList.add("罐@" + "罐体液位计-下引压阀");
        descriptionList.add("罐@" + "罐体液位计-下导淋阀");
        descriptionList.add("罐@" + "罐顶放空阀");
        descriptionList.add("罐@" + "罐顶人孔");
        descriptionList.add("罐@" + "罐顶压力表");
        descriptionList.add("罐@" + "罐顶安全阀-安全阀前手阀");
        descriptionList.add("罐@" + "罐顶安全阀-安全阀后手阀");
        descriptionList.add("罐@" + "罐顶安全阀-安全阀本体");
        descriptionList.add("罐@" + "罐顶安全阀-安全阀本体丝堵");

        descriptionList.add("罐顶调节阀组@" + "调节阀组本体");
        descriptionList.add("罐顶调节阀组@" + "调节阀组前手阀");
        descriptionList.add("罐顶调节阀组@" + "调节阀组后手阀");
        descriptionList.add("罐顶调节阀组@" + "调节阀组跨线阀");
        descriptionList.add("罐顶调节阀组@" + "调节阀组导淋阀");

        descriptionList.add("罐顶远传仪表阀@" + "换热器（E）");
        descriptionList.add("罐顶远传仪表阀@" + "换热器本体封头");
        descriptionList.add("罐顶远传仪表阀@" + "换热器本体丝堵");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程入口法兰");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程出口法兰");
        descriptionList.add("罐顶远传仪表阀@" + "换热器壳程入口法兰");
        descriptionList.add("罐顶远传仪表阀@" + "换热器壳程出口法兰");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程入口阀");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程入料管线导淋阀");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程入料管线温度计");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程入料管线导淋阀");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程出料管线阀");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程出料管线温度计");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程出料管线导淋阀");
        descriptionList.add("罐顶远传仪表阀@" + "换热器管程出料管线调节阀组");

        descriptionList.add("压缩机@" + "本体");
        descriptionList.add("压缩机@" + "注油器");
        descriptionList.add("压缩机@" + "润滑油管线阀");
        descriptionList.add("压缩机@" + "润滑油管线连接件");
        descriptionList.add("压缩机@" + "润滑油管线温度表");
        descriptionList.add("压缩机@" + "本体压盖");
        descriptionList.add("压缩机@" + "排污线阀");
        descriptionList.add("压缩机@" + "吹扫线阀");
        descriptionList.add("压缩机@" + "仪表管线的引压线");
        descriptionList.add("压缩机@" + "入口管线阀");
        descriptionList.add("压缩机@" + "入口管线导淋");
        descriptionList.add("压缩机@" + "入口管线压力表");
        descriptionList.add("压缩机@" + "出口管线阀");
        descriptionList.add("压缩机@" + "出口管线压力表");
        descriptionList.add("压缩机@" + "出口管线导淋");
        descriptionList.add("压缩机@" + "一级入口缓冲罐法兰");
        descriptionList.add("压缩机@" + "一级入口缓冲罐压力表");
        descriptionList.add("压缩机@" + "一级入口缓冲罐温度表");
        descriptionList.add("压缩机@" + "一级入口缓冲罐热电偶");
        descriptionList.add("压缩机@" + "二级入口缓冲罐法兰");
        descriptionList.add("压缩机@" + "二级入口缓冲罐压力表");
        descriptionList.add("压缩机@" + "二级入口缓冲罐温度表");
        descriptionList.add("压缩机@" + "二级入口缓冲罐热电偶");
        descriptionList.add("压缩机@" + "一级出口缓冲罐法兰");
        descriptionList.add("压缩机@" + "一级出口缓冲罐压力表");
        descriptionList.add("压缩机@" + "一级出口缓冲罐温度表");
        descriptionList.add("压缩机@" + "一级出口缓冲罐热电偶");
        descriptionList.add("压缩机@" + "二级出口缓冲罐法兰");
        descriptionList.add("压缩机@" + "二级出口缓冲罐压力表");
        descriptionList.add("压缩机@" + "二级出口缓冲罐温度表");
        descriptionList.add("压缩机@" + "二级出口缓冲罐热电偶");

        descriptionList.add("安全阀@" + "安全阀前手阀");
        descriptionList.add("安全阀@" + "安全阀后手阀");
        descriptionList.add("安全阀@" + "安全阀本体");
        descriptionList.add("安全阀@" + "安全阀本体丝堵");
        return descriptionList;
    }


    public String getPointName(String kuozhanHao, String txt) {
//        kuozhanHao = kuozhanHao.substring(1, 3);
        String bianMa = "";
        switch (txt) {
            case "泵":
                bianMa = "P";
                break;
            case "压缩机":
                bianMa = "";
                break;
            case "搅拌器":
                bianMa = "A";
                break;
            case "阀门":
                bianMa = "V";
                break;
            case "泄压设备":
                bianMa = "R";
                break;
            case "取样连接系统":
                bianMa = "S";
                break;
            case "开口阀或开口法兰":
                bianMa = "O";
                break;
            case "法兰":
                bianMa = "F";
                break;
            case "连接件":
                bianMa = "C";
                break;
            case "开口管线":
                bianMa = "O";
                break;
            default:
                bianMa = "Q";
                break;
        }
        return kuozhanHao + bianMa;
    }


    public View getSealPointView(SealPointInfo sealPointInfo, final int position, final ListViewChildClickListener childClickListener) {
        LayoutInflater inflater = LayoutInflater.from(getV());
        View itemView = inflater.inflate(R.layout.item_sealingpoint, null, false);
        TextView childTypeTv = itemView.findViewById(R.id.childTypeTv);
        TextView dimenTv = itemView.findViewById(R.id.dimenTv);
        TextView numberTv = itemView.findViewById(R.id.numberTv);
        TextView descTv = itemView.findViewById(R.id.descTv);
        TextView highTv = itemView.findViewById(R.id.highTv);
        TextView keepWarmTv = itemView.findViewById(R.id.keepWarmTv);
        ImageView delIv = itemView.findViewById(R.id.delIv);
        ImageView descMoreIv = itemView.findViewById(R.id.descMoreIv);


        childTypeTv.setText(sealPointInfo.getChildTypeEn());
        dimenTv.setText(sealPointInfo.getDimen());
        int  count =  sealPointInfo.getCount();
        if (count != 0) {
            numberTv.setText(String.valueOf(count));
        }else{
            numberTv.setText("1");
        }

        String desc = sealPointInfo.getDesc();
        if (TextUtils.isEmpty(desc)) {
            desc = getV().getLastDesc();
        }
        descTv.setText(desc);
        String high = sealPointInfo.getHigh();
        if (TextUtils.isEmpty(high)) {
            high = defaultHigh;
        }else{
            defaultHigh = high;
        }
        highTv.setText(high);
        String keepWarm = sealPointInfo.getKeepWarm();
        if (TextUtils.isEmpty(keepWarm)) {
            keepWarm = defaultKeepWarm;
        }else{
            defaultKeepWarm = keepWarm;
        }
        keepWarmTv.setText(keepWarm);

        sealPointInfo.setDimenTv(dimenTv);
        sealPointInfo.setChildTypeTv(childTypeTv);
        sealPointInfo.setNumberTv(numberTv);
        sealPointInfo.setDescTv(descTv);
        sealPointInfo.setHighTv(highTv);
        sealPointInfo.setKeepWarmTv(keepWarmTv);

        childTypeTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                childClickListener.itemChildClick(position, R.id.childTypeTv);
            }
        });
        numberTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                childClickListener.itemChildClick(position, R.id.numberTv);
            }
        });
        dimenTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                childClickListener.itemChildClick(position, R.id.dimenTv);
            }
        });
        descMoreIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                childClickListener.itemChildClick(position, R.id.descMoreIv);
            }
        });
        delIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                childClickListener.itemChildClick(position, R.id.delIv);
            }
        });
        highTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                childClickListener.itemChildClick(position, R.id.highTv);
            }
        });
        keepWarmTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                childClickListener.itemChildClick(position, R.id.keepWarmTv);
            }
        });

        descTv.addTextChangedListener(new myTextChangedListener(sealPointInfo));

        return itemView;
    }

    public void setDefaultHigh(String defaultHigh) {
        this.defaultHigh = defaultHigh;
    }

    public void setDefaultKeepWarm(String defaultKeepWarm) {
        this.defaultKeepWarm = defaultKeepWarm;
    }

    class myTextChangedListener implements TextWatcher{
        SealPointInfo sealPointInfo;

        public myTextChangedListener(SealPointInfo sealPointInfo) {
            this.sealPointInfo = sealPointInfo;
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            SealPointInfo aboutPoint = sealPointInfo.getAboutFaLan();
            if (null != aboutPoint) {
                aboutPoint.getDescTv().setText(s.toString());
            }
        }
    }
}
